package com.stefan.sort;
/*
* 相邻的凉凉比较，交换位置，第一轮最大的数会冒泡到右边
* 第二轮倒数第二数会冒泡到最右边（第一轮最右边的数不参与这轮比较）
* 就是每轮比较找到最大的数放到右边
*
* */
public class MaopaoSortAdvanced {

    public static void main(String[] args) {
        int[] data = {7,9,3,2,4,6,0,5,1,8};
        System.out.print("排序前：");
        for (int m = 0; m < data.length; m++) {
            System.out.print(data[m]);
        }
        System.out.println("");
        int len = data.length;
        for (int i = 0; i < len-1; i++) { //比较的轮次，为啥是len-1，2个数只需要比较1次，当然len也行，但是会多比较1次
            boolean flag = false;//当比较到没有交换的时候就无须后续轮次的比较了，因为这一轮后面的数字肯定是序的
            //当前伦次的元素为有序元素的第一个元素
            for (int j = 0; j < len-1-i ; j++) { // 为啥要-i，i是伦次，每比较一轮就会有一个数确定(右边最大的)，不需要比较了
                if (data[j] > data[j+1]) {
                    int temp = data[j];
                    data[j] = data[j+1];
                    data[j+1] = temp;
                    flag = true;  //有交换，还需要比较
                }
            }
            if (!flag) {
                break;
            }
            System.out.print("第"+i+"轮后：");
            for (int m = 0; m < len; m++) {
                System.out.print(data[m]);
            }
            System.out.println("");
        }

    }
}
